"""
@Project ：python
@File    ：09-多态.py
@IDE     ：PyCharm
@Author  ：DongCha
@Date    ：2024/4/10 010 19:46
"""


# 多态：多种状态，即完成某个行为时，使用不同的对象会得到不同的状态
class Animal:  # 抽象类：含有抽象方法的类
    def speak(self):
        pass  # 抽象方法：方法体是空实现（pass）的方法


class Dog(Animal):
    def speak(self):
        print("汪汪汪")


class Cat(Animal):
    def speak(self):
        print("喵喵喵")


def make_noise(animal: Animal):
    animal.speak()


dog = Dog()
cat = Cat()

make_noise(dog)  # 汪汪汪
make_noise(cat)  # 喵喵喵

# 同样的行为（函数），传入不同的对象，得到不同的结果
# 多态常作用在继承关系上
# 函数（方法）形参声明接收父类对象
# 实际传入子类对象进行工作
# 父类做定义声明
# 子类做实际工作
# 用以获得同一行为，不同状态

# 空调父类
class AC:
    def cool_wind(self):
        pass

    def hot_wind(self):
        pass

    def swing_l_r(self):
        pass


# 美的空调
class Midea_AC(AC):
    def cool_wind(self):
        print("美的制冷")

    def hot_wind(self):
        print("美的制热")

    def swing_l_r(self):
        print("美的左右")


# 格力空调
class GREE_AC(AC):
    def cool_wind(self):
        print("格力制冷")

    def hot_wind(self):
        print("格力制热")

    def swing_l_r(self):
        print("格力左右")


def make_cool(ac: AC):
    ac.cool_wind()


midea_ac = Midea_AC()
gree_ac = GREE_AC()

make_cool(midea_ac)
make_cool(gree_ac)
